package edu.upc.clase.demo.dao.impl;

import edu.upc.clase.demo.dao.PlanDao;
import edu.upc.clase.demo.entity.Plan;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import org.springframework.stereotype.Repository;


@Repository
public class PlanDaoImpl extends SimpleJdbcDaoSupport implements PlanDao{

       private static Logger log = LoggerFactory.getLogger(UsuarioDaoImpl.class);

    @Autowired
    public PlanDaoImpl(DataSource dataSource) {
        log.info("Asignando el dataSource");
        setDataSource(dataSource);
    }
    
       @Override
    public Integer insertar(Plan plan) {
        getJdbcTemplate().update(
                "insert into plan (titulo, vision, propuesta,tiempo_ejecucion,inversion_total, margen_neto, roi, documento, precio_venta, categoria, subcategoria, estado, observaciones)",
                "values (?, ?, ?,?,?,?,?,?,?,?,?,?,?)",
   plan.getS_titulo(),plan.getS_vision(),plan.getS_propuesta(),plan.getS_tiempo_ejecucion(), plan.getD_inversion_total(), plan.getD_margen_neto(),plan.getS_roi(),plan.getS_documento(), plan.getD_precio_venta(), plan.getI_categoria(),plan.getI_subcategoria(),plan.getI_estado(),plan.getS_observaciones());
        return getSimpleJdbcTemplate().queryForInt("call identity()");
    }  
       
  
       
    @Override
    public void actualizar(Plan plan) {
       
        getJdbcTemplate().update(
     "update plan set titulo = ?, vision =?, propuesta=?,tiempo_ejecucion=?,inversion_total=?, margen_neto=?, roi=?, documento=?, precio_venta=?,categoria=?, subcategoria=?, estado=?, observaciones=? where id_plan = ?" ,
   // sabio.getS_email(),sabio.getS_contraseña(),sabio.getS_nombres(),sabio.getS_apepat(),sabio.getS_apemat(),sabio.getS_sexo(),sabio.getS_dni(),sabio.getS_fecha_nacimiento(),sabio.getS_direccion(),sabio.getS_movil(),sabio.getS_pagina_web(),sabio.getS_cuenta_bancaria(),sabio.getS_nombre_banco(),sabio.getS_acerca_mi());  
     plan.getS_titulo(),plan.getS_vision(),plan.getS_propuesta(),plan.getS_tiempo_ejecucion(), plan.getD_inversion_total(), plan.getD_margen_neto(),plan.getS_roi(),plan.getS_documento(), plan.getD_precio_venta(), plan.getI_categoria(),plan.getI_subcategoria(),plan.getI_estado(),plan.getS_observaciones());
    }

    @Override
    public void eliminar(Plan plan) {
       getJdbcTemplate().update(
       "delete from plan where id_plan = ?", plan.getI_idplan());      
               
    }

    @Override
    public List<Plan> buscarTodos() {
       return getSimpleJdbcTemplate().query(
                "select * from plan",
                new BeanPropertyRowMapper<Plan>(Plan.class));
    }

    @Override
    public Plan buscar(Integer id) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Plan buscar(String titulo) {
 try {
            return getSimpleJdbcTemplate().queryForObject(
                    "select titulo, vision, propuesta,inversion_total,documento from plan where titulo=?",
                    new BeanPropertyRowMapper<Plan>(Plan.class), titulo);
        } catch (EmptyResultDataAccessException e) {
            return null;
        }
    }
    
    
    
    
    
}
    
